#ifndef _EDGE_H
#define _EDGE_H

class State;

class Edge
{
protected:
	double cost_step;
	State* entry;
	State* exit;
	double* ctrl;
	unsigned int dim_ctrl;

public:
	Edge();
	~Edge();

	State* get_entry() { return entry; }
	void set_entry(State* value) { entry = value; }

	State* get_exit() { return exit; }
	void set_exit(State* value) { exit = value; }

	double get_cost_step() { return cost_step; }
	void set_cost_step(double value) { cost_step = value; }

	unsigned int get_dim_ctrl() { return dim_ctrl; }
	void set_dim_ctrl(unsigned int value) { dim_ctrl = value; }

	double* get_ctrl() { return ctrl; }
	void set_ctrl(double* value)
	{
		ctrl = new double[dim_ctrl];
		for (unsigned int i = 0; i < dim_ctrl; ++i)
			ctrl[i] = value[i];
	}


};

#endif